Pump control system and method

ABSTRACT

A method and apparatus for a pump control system. One or more embodiments of the invention include a pump controller that can perform a self-calibration procedure, can provide precise motor speed control, can provide a limp mode before shutting down the motor when system parameters are exceeded and/or fault conditions occur, can detect fault conditions, and can store fault conditions for later retrieval.

FIELD OF THE INVENTION

This invention relates generally to pumps and pumping methods, and more particularly to pump motor controllers and control methods.

BACKGROUND OF THE INVENTION

Residential water systems typically include a line-operated motor for driving a pump-motor assembly to retrieve water from a well. The pump-motor assembly is generally submerged in the well at the end of a drop pipe. To maintain a constant supply pressure, the water systems also typically include a pressurized storage tank and a pressure switch that causes the motor to run when the pressure in the water system is low. The pressurized storage tanks are often relatively large, so that the motor does not need to be turned on and off frequently.

A need exists for a pump control system and method for performing a self-calibration procedure, for providing precise motor speed control, for providing a limp mode before shutting down the motor when system parameters are exceeded and/or fault conditions occur, for detecting fault conditions, and for storing fault conditions for later retrieval. Each embodiment of the present invention achieves one or more of these results.

SUMMARY OF THE INVENTION

Some embodiments of the present invention provide a method of calibrating a pump connected to a water distribution system and having a motor. The method can include operating the motor in a forward direction, sensing a pressure in the water distribution system, determining whether the sensed pressure has increased by a pressure increment, increasing an operating frequency of the motor by a frequency increment if the sensed pressure has not increased by the pressure increment, and storing a speed of the motor as a minimum calibrated speed value if the sensed pressure has increased by the pressure increment.

Other embodiments of the present invention can provide a method of regulating the speed of a motor in a pump. The method can include measuring an actual pressure in the water distribution system; determining whether the actual pressure is less than, greater than, or equal to a pre-set pressure value; subtracting the actual pressure from a desired pressure to determine a pressure error if the actual pressure is less than or greater than the pre-set pressure value; determining an integral of the pressure error; multiplying the integral by an integral gain to determine a first value; multiplying the pressure error by a proportional gain to determine a second value; summing the first value and the second value; and generating an updated speed control command based on the sum of the first value and the second value.

A limp mode can be provided according to some methods of the invention. The limp mode method can include measuring a parameter (e.g., a bus current, a bus voltage, a line current, and/or a temperature) and determining whether the parameter is greater or less than a threshold. The limp mode method can also include reducing an output voltage provided to the motor and/or an operating frequency of the motor if the parameter is greater or less than the threshold and shutting down the motor if the motor does not operate within operational limits while being driven in the limp mode.

Some embodiments of the invention can include various methods of detecting fault conditions in a motor of a pump or a water distribution system. These methods can include bus over-voltage detection, bus over-current detection, dry-running detection, over-temperature detection, high or low-speed foreign-object jamming detection, and pressure sensor failure detection. In some embodiments, the invention provides a method of creating a fault log and storing fault condition codes for later retrieval.

Further objects and advantages of the present invention, together with the organization and manner of operation thereof, will become apparent from the following detailed description of the invention when taken in conjunction with the accompanying drawings, wherein like elements have like numerals throughout the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments of the present invention are further described with reference to the accompanying drawings. However, it should be noted that the embodiments of the invention as disclosed in the accompanying drawings are illustrated by way of example only. The various elements and combinations of elements described below and illustrated in the drawings can be arranged and organized differently to result in embodiments which are still within the spirit and scope of the present invention.

In the drawings, wherein like reference numerals indicate like parts:

FIG. 1 is a schematic illustration of a pump, a water tank, and a pump control system according to one embodiment of the invention;

FIG. 2 is a flowchart illustrating a pump calibration method of operation for use with the pump control system of FIG. 1;

FIG. 3 is a flowchart illustrating a speed regulation method of operation for use with the pump control system of FIG. 1;

FIG. 4 is a flowchart illustrating a limp mode method of operation for use with the pump control system of FIG. 1;

FIG. 5 is a flowchart illustrating a bus over-voltage or bus under-voltage fault method of operation for use with the pump control system of FIG. 1;

FIG. 6 is a flowchart illustrating a bus over-current fault method of operation for use with the pump control system of FIG. 1;

FIG. 7 is a flowchart illustrating a dry-running fault method of operation for use with the pump control system of FIG. 1;

FIG. 8 is a flowchart illustrating an over-temperature fault method of operation for use with the pump control system of FIG. 1;

FIG. 9 is a flowchart illustrating a high-speed jamming fault method of operation for use with the pump control system of FIG. 1;

FIG. 10 is a flowchart illustrating a low-speed jamming fault method of operation for use with the pump control system of FIG. 1;

FIG. 11 is a flowchart illustrating a pressure sensor failure method of operation for use with the pump control system of FIG. 1;

FIG. 12 is a flowchart illustrating a fault storage and fault retrieval method of operation for use with the pump control system of FIG. 1; and

FIG. 13 is an example of a Voltage/Hertz (V/Hz) curve for a motor for use with one embodiment of the invention.

DETAILED DESCRIPTION

Before one embodiment of the invention is explained in full detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the following drawings. The invention is capable of other embodiments and of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms “mounted,” “connected” and “coupled” are used broadly and encompass both direct and indirect mounting, connecting and coupling. Further, “connected” and “coupled” are not restricted to physical or mechanical connections or couplings and can include electrical connections and couplings, whether direct or indirect.

In addition, it should be understood that embodiments of the invention include both hardware and electronic components or modules that, for purposes of discussion, may be illustrated and described as if the majority of the components were implemented solely in hardware. However, one of ordinary skill in the art, and based on a reading of this detailed description, would recognize that, in at least one embodiment, the electronic based aspects of the invention may be implemented in software. As such, it should be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components may be utilized to implement the invention. Furthermore, and as described in subsequent paragraphs, the specific mechanical configurations illustrated in the drawings are intended to exemplify embodiments of the invention and that other alternative mechanical configurations are possible.

FIG. 1 illustrates a pump 10 connected to one or more water tanks 12. In some embodiments, the pump 10 is a submersible pump for use in residential or commercial well pump systems. In other embodiments, the pump 10 is a pump for use in pool or spa systems. In still other embodiments, the pump 10 is a pump for use in residential or commercial water distribution systems that are connected to a municipal water system. If the pump 10 is for use in a pool or spa system or a distribution system that is connected to a municipal water system, the pump 10 may not be connected to a water tank. The pump 10 can be used in residential or commercial turf or irrigation systems, agricultural systems, golf course irrigation systems, drip irrigation systems, each one of which may or may not include a water tank and may or may not be connected to a municipal water system. In some embodiments, the pump 10 can be used as an additional pump in a pressure-boosting system. For example, the water distribution system can include a well, a first pump positioned in the well, a water tank connected to the first pump, and a second, booster pump connected to the water tank. In other embodiments, the pump 10 can be used in liquid distribution systems other than water distribution systems, such as systems for distributing hydraulic fluid.

The pump 10 can be connected to a pump control system 14 according to one embodiment of the invention. The pump 10 can include or can be connected to a motor 16 in any conventional manner. The pump control system 14 can be used to control the operation of the motor 16. In some embodiments, the motor 16 is an AC induction motor, a brush-less DC motor, or a switch-reluctance motor. Various outputs and/or control parameters of the pump control system 14 can be modified for each particular type of motor.

The pump control system 14 can include one or more pressure sensors. In some embodiments, a pressure sensor 18 can be positioned between the pump 10 and the water tank 12. In one embodiment, the pressure sensor 18 can be positioned to sense the pressure in an output line 20 between the pump 10 and the water tank 12. In some embodiments, the pressure sensor 18 can generate a signal having a range of about 4 to 20 mA or about 0.5 to 4.5 or 5.0 V. The signal generated by the pressure sensor can represent an actual pressure of 0 to about 50 PSI, 0 to about 100 PSI, 0 to about 250 PSI, or any other suitable pressure range. In some embodiments, the pressure sensor 18 is a 4 to 20 mA, Model No. 86HP062Y00100GSOC pressure sensor manufactured by Texas Instruments, Inc.; a 0.5 to 4.5 V, Model No. 61CP0320100SENAO pressure sensor manufactured by Texas Instruments, Inc.; a 4 to 20 mA, Model No. MSP-601-100-P-5-N-4 pressure sensor manufactured by Measurement Specialties, Inc.; or any suitable equivalent. In one embodiment, the pump control system 14 includes a single pressure sensor. However, in some embodiments, additional pressure sensors can be placed in any suitable position in a residential or commercial water distribution system, for example, between the water tank 12 and any water outlets (i.e., faucets, shower heads, toilets, washing machines, dishwashers, boilers, etc.) in order to monitor the water pressure in a residential home or a commercial building. In pool or spa systems, additional pressure sensors can be placed between the pump 10 and any input ports or output ports connected to the pool or spa. For example, pressure sensors can be positioned to sense the pressure in output ports of the pool or spa in order to detect foreign object obstructions in the output ports. A multiplexer (not shown) or a digital signal processor (as discussed below) could be used in the pump control system 14 to manage input signals from multiple pressure sensors and/or multiple input channels. One or more flow sensors can be used in the pump control system 14, rather than or in addition to the one or more pressure sensors.

The pump control system 14 can be connected to an AC bus line 22 and/or one or more batteries (not shown). The pump control system 14 can be connected to one or more batteries if the pump control system 14 is used in a portable pool or spa system, a recreational vehicle water distribution system, or a marine craft water distribution system. The batteries can be standard 12-volt automotive batteries, 24-volt batteries, or 32-volt batteries. However, the batteries can include any suitable battery size, combination of battery sizes, or battery packs. If batteries are used, the pump control system 14 can include a DC to AC inverter. In other embodiments, the pump 10 can be connected to one or more generators.

The pump control system 14 can include a controller 24. The controller 24 can include one or more integrated circuits, which can be programmed to perform various functions, as will be described in detail below. As used herein and in the appended claims, the term “controller” is not limited to just those integrated circuits referred to in the art as microcontrollers, but broadly refers to one or more microcomputers, processors, application-specific integrated circuits, or any other suitable programmable circuit or combination of circuits. The controller 24 can act as a power conditioner, a variable-speed drive, a pressure regulator, and/or a motor protector in the pump control system 14. In some embodiments, the controller 24 can include a digital signal processor (DSP) 26 and a microcontroller 28 that cooperate to control the motor 16. For example, the DSP 26 can manage overall system operations, and the microcontroller 28 can act as one or more “smart” sensors having enhanced capabilities. The microcontroller 28 can also coordinate serial communications. In some embodiments, the DSP 26 can be from the Model No. TMS320C240XA family of DSPs manufactured by Texas Instruments, Inc., or any suitable equivalent DSP. In some embodiments, the microcontroller 28 can be an 8-bit microcontroller that is on an isolated ground plane and communicates with the DSP 26 via an optically-isolated asynchronous communication channel. The microcontroller 28 can be a Model No. PIC16LF870 integrated circuit manufactured by Microchip Technology, Inc. In some embodiments, the protocol for communication between the DSP 26 and the microcontroller 28 can include 4 bytes of control data passed at a 64 Hz interval, without error detection or correction mechanisms. In some embodiments, the DSP 26 can command the microcontroller 28 to enter a “normal” mode once per second, in order to prevent the microcontroller 28 from resetting without the DSP 26 being reset. In some embodiments, the DSP 26 and/or an EEPROM 54 can be reprogrammed in the field by having new parameters, settings, and/or code uploaded, programmed, or downloaded to the DSP 26 and/or the EEPROM 54 (e.g., through the microcontroller 28 and a serial communication link 56).

The pump control system 14 can also include one or more sensors 30 and/or an array of sensors (which can include the pressure sensor 18) connected to the controller 24. In some embodiments, the DSP 26 can read one or more of the sensors 30 directly, whether analog or digital. For processing the analog sensors 30, the DSP 26 can include an analog-to-digital converter (ADC) 32. The ADC 32 can read several channels of analog signals during a conversion period. The conversion period can be set to provide an appropriate sampling rate for each sensor (e.g., a pressure sensor may be sampled at a higher rate than a temperature sensor) and/or for each particular system (e.g., a pressure sensor in a residential building may be sampled at a higher rate than a pressure sensor on an output port of a pool or spa). The ADC 32 can be reset before the DSP 26 triggers a new start of conversion (SOC). Resetting the ADC 32 can allow the DSP 26 to maintain uniform channel sample rates.

In some embodiments, the microcontroller 28 can read one or more of the sensors 30 at fixed intervals. For example, the microcontroller 28 can read the pressure sensor 18. The microcontroller 28 can also read isolated power supplies (e.g., power supply module A and power supply module B, as shown in FIG. 1) for different types of pressure sensors that can be used as the pressure sensor 18. For example, the different types of pressure sensors can include a 4-20 mA pressure sensor and a 0-5 V_(DC) pressure sensor. In some embodiments, the microcontroller 28 can automatically determine which type of pressure sensor is connected to the system. The signal from both types of pressure sensors can be at a maximum frequency of 8 Hz, and the minimum sample rate can be 64 Hz. The sensing range for both types of pressure sensors can be 0 to about 50 PSI, 0 to about 100 PSI, 0 to about 250 PSI, 0 to about 1000 PSI, 0 to about 2500 PSI, or any other suitable pressure range for low, medium, or high-pressure applications. The microcontroller 28 can perform a pressure sensor check (for either type of pressure sensor) in order to verify that there is not a fault condition occurring with respect to the pressure sensor 18. The pressure sensor check is described in more detail below with respect to FIG. 11. The input signal from the pressure sensor check can be at a maximum frequency of 8 Hz, and the minimum sample rate can be 64 Hz.

The microcontroller 28 can also read a temperature sensor 19 (e.g., located on a heat sink 21 of the controller 24 or located in any suitable position with respect to the pump 10 and/or the motor 16). Rather than or in addition to the temperature sensor 19, the pump control system 14 can include a temperature sensor located in any suitable position with respect to the pump 10 in order to measure, either directly or indirectly, a temperature associated with or in the general proximity of the pump 10 in any suitable manner. For example, the temperature sensor can include one or more (or any suitable combination) of the following components or devices: a resistive element, a strain gauge, a temperature probe, a thermistor, a resistance temperature detector (RTD), a thermocouple, a thermometer (liquid-in-glass, filled-system, bimetallic, infrared, spot radiation), a semiconductor, an optical pyrometer (radiation thermometer), a fiber optic device, a phase change device, a thermowell, a thermal imager, a humidity sensor, or any other suitable component or device capable of providing an indication of a temperature associated with the pump 10. The input signal from the temperature sensor 19 can be at a maximum frequency of 8 Hz, and the minimum sample rate can be 64 Hz. The operating range of the temperature sensor 19 can be −25° C. to +140° C. The microcontroller 28 can use the input from the temperature sensor 19 to halt operation of the motor 16 during an over-temperature condition (e.g., an over-temperature condition of the controller 24), as will be described in more detail below with respect to FIG. 8. In one embodiment, if the temperature of the controller 24 becomes greater than about 70° C. and/or the line voltage from the controller 24 to a two-horsepower motor 16 becomes less than about 207 V, the controller 24 can halt operation of the motor 16 or reduce the speed of the motor 16 in order to adjust for an over-temperature condition.

In addition, the microcontroller 28 can read one or more run/stop inputs 47. One or more run/stop inputs 47 can be placed in any suitable positions with respect to the water distribution system. For example, a run/stop input 47 can be a manual or automatic switch placed in close proximity to a pool or spa. If a user presses a manual switch, the controller 24 can immediately disable the motor drive. An automatic switch can be placed adjacent to a grate or a guard in a pool or spa, so that the run/stop input 47 is automatically activated (i.e., changes state) if the grate or guard is removed. Also, a run/stop input 47 can be a foreign object detection sensor placed in a pool or spa. In addition, a run/stop input 47 can be an over-pressure relief valve or a water detection sensor (e.g., placed in a basement of a residential building). The run/stop inputs 47 can be connected to the controller 24 (and in some embodiments, can be read by the microcontroller 28). The run/stop inputs 47 can be connected to one another in a daisy chain configuration, so that if any one of the run/stop inputs 47 is activated (e.g., any one of the run/stop inputs is opened in order to break the circuit), the controller 24 can immediately disable the motor drive. The run/stop inputs 47 can also be used to enable the motor drive. In some embodiments, the motor drive can be enabled when the run/stop input is active (i.e., the contacts are closed) and disabled when the run/stop input is inactive (i.e., the contacts are open).

The microcontroller 28 can send the raw data from the analog sensors to the DSP 26 at uniform time intervals via a serial port. The DSP 26 can include one or more filters (not shown) or can be programmed to filter the signals received from the sensors 30 and/or the microcontroller 28. In one embodiment, in order to facilitate filtering, the DSP 26 can read the sensors 30 or can receive signals from the microcontroller 28 at minimum sample rates of about eight times the sensed signal's maximum frequency.

As shown in FIG. 1, the pump control system 14 can include a power factor correction and converter/rectifier module 34 connected to a neutral line 36 of the AC bus line 22. The controller 24 can be connected to a ground line 42 of the AC bus line 22 in any suitable manner. The power factor correction can be greater than or equal to about 0.9, and in some embodiments greater than or equal to about 0.98, at the rated output power. The power factor correction and converter/rectifier module 34 can also be connected via a fuse 38 (e.g., an integral input fuse) to a power line 40 of the AC bus line 22. In some embodiments, the fuse 38 can be changed so that the motor 16 can be operated at two or more voltage input settings (e.g., single-phase, line-power voltage inputs of about 115 V_(RMS) at about 30 A_(RMS) or about 230 V_(RMS) at about 15 A_(RMS)). In other words, a user can switch between a line-power voltage input of 115 V_(RMS) and a line-power voltage input of 230 V_(RMS) by changing only the fuse 38. In some embodiments, the single-phase input power is at a line voltage ranging from about 103 to 127 V_(RMS), a line current of about 30 A_(RMS), and a frequency ranging from about 45 to 65 Hz. In other embodiments, the single-phase input power is at a line voltage ranging from about 207 to 253 V_(RMS), a line current of about 15 A_(RMS), and a frequency ranging from about 45 to 65 Hz. Although the controller 24/fuse 38 combinations can be designed for particular input voltages and currents, in some embodiments, the controller 24 can operate the drives 46 to maintain a constant or near constant pressure with a voltage of up to about 255 V_(RMS) with a 30 A_(RMS) fuse or with a voltage of as low as about 103 V_(RMS) with a 15 A_(RMS) fuse.

The power factor correction and converter/rectifier module 34 can be connected to a power supply 44 (which can include a single power supply, or can include a first power supply module A and a second power supply module B, as shown in FIG. 1). The power factor correction and converter/rectifier module 34 can be connected to one or more drives 46 for the motor 16 via a DC bus line 48. The drives 46 can be connected to the pump 10 and/or the motor 16 in order to selectively control the motor 16. In some embodiments, the drives 46 can provide three-phase outputs to the motor 16. In one embodiment, the controller 24 can turn the drives 46 on and off and each of the three drives 46 can operate 120° out-of-phase in order to generate an AC sine wave from the input of the DC bus line 48. In one embodiment, the three-phase outputs can include one or more of the following: 0-230 V_(RMS) (line to line) at 30-200 Hz; 0-230 V_(RMS) (line to line) at 30-60 Hz; and 0-230 V_(RMS) (line to line) at 30-80 Hz. However, the maximum voltage output from the drives 46 can be greater than or less than 230 V_(RMS). In addition, the maximum voltage output from the drives 46 can be programmed as any suitable voltage setting (e.g., for a custom motor in a voltage range of about 20 V_(RMS) to about 250 V_(RMS) and a frequency range of about 30 Hz to about 250 Hz). In one embodiment, the maximum output power to the motor 16 can be about 2116 W_(MAX) (about 230 V_(RMS) at 9.2 A_(RMS) total); however, the maximum output power of the motor 16 can be greater or less than 2116 W_(MAX). The maximum output voltage to the motor 16 can be about 250 V_(RMS) phase-to-phase, and the maximum output current to the motor 16 can be about 5.9 A_(RMS) per phase. The power efficiency can be at least about 88% at the rated output power (e.g., when the controller 24 is connected to the motor 16 with three meters of 12-3 W. G. NM-B wire). In some embodiments, the controller 24 can detect a short circuit (either line-to-line, phase-to-phase, or line-to-ground) at the output to the motor 16. The controller 24 can stop the motor drive when a short circuit is detected.

As noted, the DSP 26 can read one or more of the sensors 30 directly. One of the sensors 30 can sense the voltage of the DC bus line 48. In some embodiments, the DSP 26 can sense the voltage of the DC bus line 48 and the same sensor or another one of the sensors 30 can sense the current of the DC bus line 48. In some embodiments, the DSP 26 can determine the voltage of the AC bus line 22 from the voltage on the DC bus line 48, and the DSP 26 can determine the current of the AC bus line 22 from the current on the DC bus line 48 (e.g., by applying one or more conversion factors to the voltage and current of the DC bus line 48). In some embodiments, one to four sensors can be included on the DC bus line 48 in order to measure AC line current, AC line voltage, DC bus current, and DC bus voltage. The one or more sensors 30 on the DC bus line 48 can be read by the DSP 26 and/or the microcontroller 28.

In general, the terms “bus line,” “bus voltage,” and “bus current” as used herein and in the appended claims refer to the DC bus line 48 itself or the voltage and current, respectively, of the DC bus line 48. The bus voltage of the DC bus line 48 can be monitored to determine the power being supplied to the drives 46. In some embodiments, the target voltage for the DC bus line 48 is about 380 V_(DC). The voltage of the DC bus line 48 can be used by the DSP 26 to halt operation of the motor 16 during an over-voltage or under-voltage condition, as will be described in detail below with respect to FIG. 5. Also, if the voltage of the DC bus line 48 is low, the DSP 26 can operate the motor 16 in a limp mode, as will also be described in detail below with respect to FIG. 4. The bus current can also be monitored to determine the power being supplied to the drives 46. In addition, the bus current can be monitored in order to operate the motor 16 in a limp mode (as described in more detail below with respect to FIG. 4) if the bus current exceeds a programmed threshold. In some embodiments, the maximum frequency of the sensor or sensors 30 for the DC bus line 48 is about 280 Hz, and the minimum sample rate is about 2,240 Hz.

The terms “line voltage” and “line current” as used herein and in the appended claims generally refer to the voltage and current, respectively, of the AC bus line 22 (although the voltage and current of the AC bus line 22 may be converted from a measurement taken from the DC bus line 48). However, it should be understood by one of ordinary skill in the art that a bus voltage can be a line voltage (both voltages are measured from an electrical “line”), and vice versa. It should also be understood by one of ordinary skill in the art that a bus current can be a line current (both currents are measured from an electrical “line”), and vice versa. Thus, the term “bus voltage” can include a “line voltage” and the term “bus current” can include a “line current.” In some embodiments, the single-phase input power of the AC line voltage is about 115 to 230 V_(RMS) at a frequency of about 45 to 65 Hz. In some embodiments, the single-phase input power is at an AC line voltage of about 103 to 127 V_(RMS), an AC line current of about 30 A_(RMS), and a frequency of about 45 to 65 Hz. In other embodiments, the single-phase input power is at an AC line voltage of about 207 to 253 V_(RMS), an AC line current of about 15 A_(RMS), and a frequency of about 45 to 65 Hz. In one embodiment, the maximum frequency of the AC line voltage and current signals is about 65 Hz, and the minimum sample rate is about 520 Hz.

One of the sensors 30 (which can be read by the DSP 26, in some embodiments) can sense a reference voltage that can be used to calculate an offset value for the analog inputs managed by the DSP 26. The reference voltage is generally one-half of the DC rail voltage for the active filters that process the signal. However, due to tolerances, temperature, and age, the reference voltage can vary slightly over time. Accordingly, the reference voltage can be measured by one of the sensors 30 in order to account for any variances. In some embodiments, the maximum frequency of the reference voltage input can be about 8 Hz, and the minimum sample rate can be about 64 Hz. In some embodiments, the reference voltage can be measured from any suitable point inside of the controller 24.

As shown in FIG. 1, the DSP 26 can include an event manager peripheral module 50 and a pulse-width modulation (PWM) output module 52. In some embodiments, the PWM output module 52 can include six PWM output channels in order to control one or more inverter drives 53 that can supply three-phase power to the motor 16. The PWM output module 52 can use a switching frequency of about 7.2 kHz plus or minus 1%. The PWM output waveforms can be symmetric and can be operated in a manner consistent with space vector pulse-width modulation (SVPWM) firing sequences, as will be described in more detail below. The event manager peripheral module 50 in the DSP 26 can control the PWM output waveforms, as well as their dead band timers.

The controller 24 can include one or more types of memory, for example, program memory (FLASH), primary data memory, and secondary non-volatile data memory (e.g., a serial EEPROM 54). The EEPROM 54 can be connected to the DSP 26. The controller 24 can also include a serial communication link 56 (e.g., an optically-isolated RS-232 link using a standard DB-9 connector). In some embodiments, the serial communication link 56 can be permanently or removably connected to an external device 58, such as a personal computer, a laptop, or a personal digital assistant (PDA) running a terminal program 60 (e.g., Windows® HyperTerminal). In one embodiment, the parameters for serial communication can include 9600 baud, 8 data bits, no parity, 1 stop bit, and XON/XOFF flow control. In some embodiments, the data from the terminal program 60 can be transferred to the DSP 26 from the microcontroller 28. The data from the terminal program 60 can be limited to ASCII printable standard characters and can be interleaved with control data packets. The most significant bit of the data byte being sent can be used by the DSP 26 to identify the control data packets.

In some embodiments, a user can access the controller 24 with the external device 58 in order to configure drive parameters, to manually run or stop the drives 46 to the motor 16, or to read one or more of the following parameters: run/stop input status, current actual pressure, motor speed, bus voltage, bus current, total operating hours, powered time, running time, controller parameters, fault condition codes, fault history, software version, various parameter lists (e.g., control or operational parameters), current drive frequency, input line voltage, input line current, input power, output power to motor, constant pressure setpoint, heat sink temperature, auxiliary output relay status, motor select switch setting, pressure level setpoint switch setting, low band pressure, high band pressure, dry running status, proportional gain, integral gain, calibrated minimum speed value, V/Hz curve settings, limp mode thresholds, or any other desired information. Each of these parameters can be stored in the EEPROM 54. Many of these parameters will be discussed in more detail below with respect to FIGS. 2-13. A user can also enter one or more of the following commands via the external device 58 and the serial communication link 56: run pressure calibration (in order to manually run a self-calibration procedure), software reset, and default EEPROM (in order to set the parameters stored in the EEPROM back to their default settings).

In some embodiments, the serial communication link 56 can be used to link any number of controllers 24 located throughout the world via a network (e.g., the Internet) to one another and/or to a monitoring system or station. For example, each controller 24 can be removable or permanently connected to a computer or any other suitable device configured to communicate over the network with the monitoring system or station. Each controller 24 can have an Internet-protocol address and/or can be equipped with additional peripheral equipment for network communications. The monitoring system or station can be used to monitor the operation of the controllers 24, pumps 10, and/or motors 16; to troubleshoot the controllers 24, pumps 10 and/or motors 16; and/or to change the operating parameters of the controllers 24.

As also shown in FIG. 1, the pump control system 14 can include a terminal 62. The terminal 62 can be connected to the controller 24. In some embodiments, the terminal 62 and the controller 24 can be included in a single housing and mounted in any suitable position in the water distribution system for access by a user. The housing can be a rain-proof/weather-resistant enclosure and can be constructed of NEMA-4 material. The terminal 62 can be directly or indirectly connected to the DSP 26.

The terminal 62 can include a pressure level setpoint switch 64, which can be used to set a constant pressure setpoint for the water distribution system. In one embodiment, a default constant pressure setpoint (e.g., about 60 PSI) can be stored in the EEPROM 54. In one embodiment, the pressure level setpoint switch 64 can have 16 positions and the pressure settings can range from about 25 PSI to about 95 PSI in 5-PSI increments. In some embodiments, if the pressure level setpoint switch 64 is in a certain position (such as the zero position), the constant pressure setpoint can be loaded from the external device 58 over the serial communication link 56 and can be stored in the EEPROM 54. The constant pressure setpoint can then be recovered from the EEPROM 54 when power is provided to the pump control system 14. In some embodiments, a user can set the constant pressure setpoint via the external device 58 and the serial communication link 56 according to any suitable increments (e.g., 1 PSI increments, 0.5 PSI increments, 0.01 PSI increments, etc.).

The controller 24 (e.g., using the PWM output module 52 of the DSP 26 and the drives 46) can drive a three-phase induction motor using a space vector pulse-width modulation (SVPWM) technique. Using the SVPWM technique, a commanded drive frequency can be converted to an angular value via numerical integration. The SVPWM output can provide precise control of the magnitude and angle for the stator electromagnetic field of the AC induction motor. The angular value can be determined by integrating the commanded drive frequency. The angular value can be combined with the desired output voltage level (which is a function of the speed of the motor 16) in order to provide the pulse timings for the three-phase power converter.

The desired output voltage level can be calculated using a Volts-Hertz (V/Hz) curve, which can provide the output voltage level based on the drive frequency. FIG. 13 illustrates an example of a V/Hz curve, including the following four parameters: offset voltage, rated voltage, maximum operating frequency, and rated frequency. The shape of the V/Hz curve depends on the type of motor and can generally be determined from the motor speed and the voltage ratings. The rated voltage and the rated frequency are often displayed on the motor itself. In one embodiment, default settings of about 250 V_(RMS) for the rated voltage and about 65 Hz for the rated frequency can be stored in the EEPROM 54. Most motor manufacturers supply the offset voltage with the V/Hz curve. However, in one embodiment, default setting of about 10 V_(RMS) for the offset voltage can be stored in the EEPROM 54. The offset voltage is necessary to produce the rated flux (and thus the rated torque) and is dependent on the stator winding resistance and the rated magnetized current of the motor 16. At motor speeds greater than the rated frequency, the output voltage will generally remain at the rated voltage and the torque will decrease (due to field weakening). In some embodiments, the maximum operating frequency is only set to a value higher than the rated frequency if the motor is not fully loaded at the rated frequency (i.e., the motor does not use the entire rated torque). In one embodiment, a default setting of about 80 Hz for the maximum operating frequency can be stored in the EEPROM 54.

In some embodiments, the V/Hz curves can be implemented via a first order curve with an upper limit and an offset term. In other embodiments, a second order curve can be implemented to further optimize system performance. For each V/Hz curve, several parameters can be stored in the EEPROM 54 of the pump control system 14. The stored parameters can include slope, rated (maximum) voltage, offset voltage, maximum operating frequency, and minimum operating frequency. The slope value can be calculated based on the offset voltage, the rated voltage, and the rated frequency.

As shown in FIG. 1, the terminal 62 can include a motor select switch 66, which can be used in some embodiments to configure the drives 46 for the particular motor 16, for example, by selecting an appropriate V/Hz curve. In one embodiment, the motor select switch 66 can be an 8-position rotary switch with three digital output lines. In some embodiments, the motor select switch 66 can be used to select three sets of factory defaults for three specific types of motors. A user can position the motor select switch 66 in order to select the V/Hz curve, a voltage limit, a current limit, and a power limit (i.e., motor protection limits) for a particular type of motor. In one embodiment, a user can select one of the following types of motors using the motor select switch 66: a 30 to 60 Hz motor; a 30 to 80 Hz motor; and a 30 to 200 Hz motor. For a 30 to 60 Hz motor, the maximum voltage, the rated frequency, and the maximum frequency can each occur at about 60 Hz. For a 30 to 80 Hz motor, the rated frequency can occur at about 65 Hz and the maximum frequency can occur at about 80 Hz. Between 65 Hz and 80 Hz, the output voltage can be held constant at the maximum value. For a 30 to 200 Hz motor, the maximum voltage, the rated frequency, and the maximum frequency can each occur at about 200 Hz.

The motor select switch 66 can also be used to select a custom motor, which can be manually configured by the user via the serial communication link 56. In some embodiments, a user can set a V/Hz curve, a voltage limit, a current limit, a power limit, a shutdown bus current, a limp mode bus current, and dry-running current setpoints for a custom motor. In one embodiment, for the V/Hz curve of a custom motor, a user can specify each of the parameters shown in FIG. 13 via the serial communication link 56 (i.e., offset voltage, rated frequency, rated voltage, and maximum operating frequency). In one embodiment, the motor select switch 66 must be in a zero position in order for the user to be allowed to change various settings via the serial communication link 56. In some embodiments, if a user makes changes to the V/Hz curves via the serial communication link 56, the changes will not take effect until the pump control system 14 is reset.

As shown in FIG. 1, the terminal 62 can also include a tank select switch 74 for providing a tank parameter input (such as tank size) to the controller 24 and/or the EEPROM 54. The controller 24 can use the tank parameter input from the tank select switch 74 to select different gains (e.g., a proportional gain, an integral gain, etc.) for use in controlling the pump 10 and/or the motor 16.

As shown in FIG. 1, the terminal 62 can include one or more status indicator light-emitting diodes (LEDs) (e.g., LED A and LED B). The status indicator LEDs can be lit continuously or can flash at various rates (e.g., slow, fast, or combination rates) to indicate the status of the drive 46 of the motor 16. In one embodiment, LED A (e.g., a green LED) can be lit continuously when power is being applied, but the controller 24 is not driving the motor 16. LED A can flash slowly when the controller 24 is driving the motor 16 and the controller 24 is not operating in a limp mode (as will be described in detail below with respect to FIG. 4). LED A can flash quickly if the controller 24 is driving the motor 16 in a limp mode. LED A can also flash at a 50% duty cycle during a 30-second power-up delay.

In one embodiment, LED B (e.g., a red LED) can be used to indicate various fault conditions to a user. Each of the various fault conditions will be described in detail below with respect to FIGS. 5-11. In one embodiment, when no fault conditions have occurred since the last reset (or since the fault conditions were last cleared), LED B is not lit. If a fault condition occurs, LED B can flash at a certain rate based on the type of fault condition. LED B can continue to flash at the particular rate until a different fault condition occurs or until a user presses a clear fault LED button 68 on the terminal 62. The clear fault LED button 68 can be a normally-open push-button contact that can halt the flashing of LED B when the push-button contact is closed. In one embodiment, the fault conditions and/or the fault log are not cleared when a user presses the clear fault LED button 68. LED B can be continuously lit if a certain number of fault conditions (such as 15 fault conditions) has occurred within a certain time period (such as 30 minutes). In some embodiments, the flash rate of LED B only indicates a general class of the fault conditions. However, in other embodiments, the flash rate of LED B can indicate specific individual fault conditions. In one embodiment, LED B is lit when a fault condition is occurring, but the controller 24 shuts off LED B if the fault condition is no longer occurring. In other words, LED B does not remain lit continuously once the fault condition is no longer occurring, even if the pump control system 14 does not include a clear fault LED button 68 or a user has not pushed the clear fault LED button 68.

The terminal 62 can include an auxiliary relay 70, as shown in FIG. 1, having a programmable output. The auxiliary relay 70 can be used to control any external devices and/or circuits. In some embodiments, if enabled, the auxiliary relay 70 can report the state of the motor 16 and can be closed whenever the controller 24 is driving the motor 16. If not enabled, the output of the auxiliary relay 70 can be off. A user can enable or disable the auxiliary relay 70 via the serial communication link 56 and the external device 58. A user can program a minimum time period (e.g., 500 ms) during which the auxiliary relay 70 is energized before being de-energized. A user can also program a minimum time period (e.g., 500 ms) that the auxiliary relay 70 must be de-energized before being re-energized. In addition, a user can program a minimum time period (e.g., 500 ms) that the motor 16 must be off before the auxiliary relay 70 is allowed to de-energize. In general, the auxiliary relay 70 can be programmed to provide any suitable output signal based on any condition or parameter (e.g., pressures, currents, voltages, limp mode status) that can be determined or monitored by the controller 24. For example, the auxiliary relay 70 can be connected to a second, booster pump or a pump that provides doses of chemicals to a pool or spa system. The auxiliary relay 70 can be programmed to provide any suitable output for controlling the second, booster pump (such as operating the booster pump when the actual pressure in the water distribution system falls below a certain threshold). The auxiliary relay 70 can be programmed to provide any suitable output for controlling the doses of chemicals to the pool or spa system (such as providing a chemical dose after a certain number of hours of operation).

The terminal 62 can include one or more power factor correction (PFC) controls (e.g., PFC A and PFC B, as shown in FIG. 1). PFC A can be used to select a target DC bus voltage (e.g., 350 V_(DC) or 380 V_(DC)). PFC B can be used to enable or disable the hardware-based PFC module 34 in the controller 24. The terminal 62 can also include a PTC relay 72 that can be used to enable or disable a PTC pre-charge circuit for the DC bus line. The PFC module 34 can be enabled when the PTC pre-charge circuit is switched out and the bus is considered started.

The controller 24 can be programmed to operate the pump control system 14 in order to perform several functions and/or methods according to several embodiments of the invention, as shown and described below with respect to FIGS. 2-12. In some embodiments, the DSP 26 of the controller 24 is programmed to perform each of the functions and/or methods shown and described with respect to FIGS. 2-12.

Referring first to FIG. 2, the controller 24 can perform a self-calibration procedure when the pump 10 is initially installed (e.g., when a submersible pump is lowered into the ground, when a pool or spa pump is installed, when a pump is connected to a water distribution system, etc.). A user can perform a number of tasks during the installation of the pump 10. For example, those tasks can include the following: configuring any rotary switch settings, connecting a pressure feedback, connecting run/stop input terminals to external switches and/or devices (e.g., a device can provide an output to energize a relay or a circuit can be electronically opened or closed), connecting the motor leads, connecting the motor chassis to earth ground, and connecting the line power (single-phase 115 V_(RMS) or 230 V_(RMS)). Once one or more of these tasks are completed and power is initially provided to the pump 10 and/or the motor 16, the controller 24 can begin (at 100) the self-calibration procedure. Power can be provided when a user connects the AC bus line 22 to the controller 24, which provides power to the power factor correction and converter/rectifier module 34, to the DC bus line 48, to the drives 46, and to the pump 10 and/or the motor 16.

In some embodiments, all user valves or outputs in the water distribution system are shut and the pressure in the water tank 12 is below the constant pressure setpoint before the controller 24 begins the self-calibration procedure. If the pressure in the water tank 12 is greater than the constant pressure setpoint, the controller 24 can delay the self-calibration procedure until the pressure in the water tank 12 falls below the constant pressure setpoint. In some embodiments, the controller 24 can wait for another time period (such as five seconds) after the pressure in the water tank 12 falls below the constant pressure setpoint, during which time period flow in the water distribution system can be shut off (in order to prevent inaccurate calibration results).

The self-calibration procedure, in some embodiments, can include a regulation mode during which the controller 24 operates the pump 10 to raise the pressure in the water tank 12 to a desired tank pressure setpoint. Once the pressure in the water tank 12 has been raised to the desired tank pressure setpoint or if the pressure in the water tank 12 was already at the desired tank pressure setpoint when the regulation mode began, the self-calibration procedure can continue to a search mode. In the search mode, the controller 24 can determine a search pressure by adding a pressure value (e.g., 1 PSI) to the current pressure in the water tank 12.

Referring to FIG. 2, in the search mode, the controller 24 can begin operating (at 102) the motor 16 in a forward direction (i.e., the direction that supplies water to the water tank 12 and/or to the water distribution system) at a relatively low speed (e.g., a minimum operating speed of 30 Hz). The controller 24 can sense (at 104) a pressure in the water distribution system. In one embodiment, the controller can read the pressure sensor 18 positioned in an outlet port 20 between the pump 10 and the water tank 12. The controller 24 can determine (at 106) whether the pressure has increased by a pressure increment, such as 1 PSI or any other suitable pressure increment. If the sensed pressure has not increased by the pressure increment, the controller 24 can increase (at 108) an operating frequency of the motor by a frequency increment, such as 1 Hz. In other words, the controller 24 can begin operating the motor 16 at the motor's minimum operating speed and slowly increase the motor speed until the pressure in the water tank 12 exceeds the search pressure. In some embodiments, the controller 24 can increase the motor speed, pause for a time period to allow the water distribution system to stabilize (e.g., for 10 seconds), and then resume increasing the motor speed. The controller 24 can pause the increasing of the motor speed to allow the water distribution system to stabilize any suitable number of times during the self-calibration procedure.

If the sensed pressure has increased by the pressure increment, the controller 24 can set (at 110) one or more gain values (e.g., a proportional gain, an integral gain, or any other system gain) based on the current speed of the motor 16. In some embodiments, the controller 24 can access a look-up table in order to find the appropriate gain values for the current speed of the motor 16. The controller 24 can then store (at 112) the speed of the motor 16 as the minimum calibrated speed value or the minimum non-zero flow speed. In some embodiments, the controller 24 can decrease or increase the current speed of the motor 16 by one or more frequency increments (or by any other suitable increment or value) and store the decreased or increased speed value as the minimum non-zero flow speed. For example, the controller 24 can access a look-up table to find an appropriate minimum non-zero flow speed for the current motor speed. The minimum non-zero flow speed can be stored in any suitable system memory, such as the EEPROM 54. The search mode can end when the motor 16 is spinning at or above the minimum non-zero flow speed, which causes flow into the water tank 12 and raises the pressure in the water tank 12. The minimum non-zero flow speed can be a function of the pump 10, the motor 16, a total head pressure at the pump 10 (which can be a function of a pressure setpoint for the water tank 12 and a depth of a well, if the pump 10 is being installed in a well), and any other sizes, features, or requirements of the water distribution system within which the pump 10 is installed. It should also be noted that even after the self-calibration procedure is used to set the minimum non-zero flow speed, a user can change the minimum non-zero flow speed via the external device 58 and the serial communication link 56.

In addition to the self-calibration procedure described above, in some embodiments, the controller 24 can compute an idle speed for the water distribution system. The controller 24 can also set gains for an actual pressure regulation proportional/integral control loop. The gains can be based on the minimum non-zero flow speed, and can be determined, for example, by accessing a look-up table of empirical values. In addition, the controller 24 can initialize various portions of the pump control system 14 by setting registers, inputs/outputs, and/or variables.

After the self-calibration procedure is complete, the controller 24 can use the minimum non-zero flow speed as the initial speed for the motor 16 whenever the motor 16 is initially turned on. In other words, when a pressure in the water distribution system drops below a certain level (as will be described in detail below with respect to FIG. 3), the controller 24 can use the minimum non-zero flow speed as the initial speed for the motor 16, rather than using an initial speed close to zero and ramping the speed up to a more effective speed for the particular water distribution system. Accordingly, the minimum non-zero flow speed can be generated by the controller 24 for each particular water distribution system.

In addition to performing a self-calibration procedure when the pump 10 is installed, the controller 24 can perform a self-calibration procedure whenever power and a new constant pressure setpoint are provided to the pump control system 14. When power is provided to the drive 46 for the motor 16, the pump control system 14 determines if the current constant pressure setpoint is the same as the previous constant pressure setpoint. The previous constant pressure setpoint can be stored in memory, such as the EEPROM 54. In some embodiments, a user can provide a new constant pressure setpoint for the water distribution system by using the external device 58 connected to the controller 24 via the serial communication link 56. In other embodiments, the controller 24 can automatically perform a self-calibration procedure whenever the drive 46 is provided with power and a new input from the pressure setpoint switch 64 and/or the motor select switch 66. For example, a 30 second delay period during the power-up process can be used by the controller 24 to check the switches 64 and/or the switch 66 to determine if the settings have been changed. If the settings have been changed, the controller 24 can automatically perform a self-calibration procedure. Also, if the motor select switch 66 is set for custom parameters (e.g., as input by the user via the serial communication link 56), the user can manually request the self-calibration procedure after updating the custom parameters. In some embodiments, a user can manually or automatically request an additional self-calibration procedure (e.g., via the serial communication link 56). If the user requests an additional self-calibration procedure, the controller 24 can stop operating, but it may not be necessary for the controller 24 to power-down before performing the self-calibration procedure.

In some embodiments, when the motor 16 is started from a stopped state, the controller 24 can use a “soft start” algorithm. In one embodiment, the soft start algorithm can be an acceleration of the motor 16 from 0 to about 30 Hz in about 1 second. The soft start algorithm can also be defined by a self-lubrication specification for the pump 10 and/or the motor 16.

In some embodiments, when the motor 16 is commanded to stop while in a running state, the controller 24 can use a “soft stop” algorithm. The controller 24 can use a soft stop algorithm when the commanded drive frequency is below about 30 Hz. The voltage provided to the motor 16 can be ramped down to zero volts as quickly as possible without causing motor regeneration. The controller 24 can also use a soft stop algorithm to prevent rapid cycling when the water demand is slightly less than the minimum flow rate of the pump 10 for a particular water tank 12 and well depth. In this case, a soft stop algorithm can allow the motor 16 to idle at a minimum operating speed for about 10 seconds after the target pressure is reached and the water demand has stopped. This type of soft stop algorithm can mitigate constant on/off cycling of the pump 10 during times of low water demand (e.g., when a leak has occurred).

Referring to FIG. 3, the controller 24 can regulate the speed of the motor 16 in order to maintain a constant or near constant water pressure in the water distribution system. The controller 24 can use a proportional/integral (PI) control loop to generate an updated speed control command (i.e., a PI control output). The controller 24 can measure (at 150) an actual pressure in the water distribution system. Generally, the pump control system 14 remains idle until the pressure in the water distribution system drops below a pre-set pressure value (which can also be referred to as the constant pressure setpoint). More specifically, the controller 24 can determine (at 152) whether the actual pressure is less than a pre-set pressure value. If the actual pressure is less than the pre-set pressure value, the controller 24 can subtract (at 154) the actual pressure from a desired pressure to determine a pressure error. The controller 24 can determine (at 156) an integral of the pressure error and can multiply (at 158) the integral by an integral gain (e.g., a gain of 18) to determine a first value (e.g., the integral component of the PI control output). The controller 24 can multiply (at 160) the pressure error by a proportional gain (e.g., a gain of 80) to determine a second value (e.g., the proportional component of the PI control output). The controller 24 can sum (at 162) the first value and the second value and can generate (at 164) an updated speed control command based on the sum of the first value and the second value (e.g., the sum of the proportional and integral components of the PI control output). In some embodiments, the speed control command can represent a motor drive frequency. Based on the updated speed control command, the controller 24 can increase or decrease (at 166) the speed of the motor 16 to maintain a constant or near constant pressure setpoint. In this manner, the controller 24 can regulate the speed of the motor 16 in real-time or near real-time.

In some embodiments, the pump control system 14 can provide integral control in order to provide a zero steady-state error. In other words, if the motor 16 is spinning and the pump 10 is providing flow, the actual pressure can be equal to the constant pressure setpoint and the motor 16 can continue to operate. However, if the pump control system 14 provides only proportional control, the actual pressure will be slightly lower than the constant pressure setpoint. This slightly low pressure occurs because proportional control is error driven (i.e., there must be some error to generate a non-zero proportional output). Thus, if the pump 10 and the motor 16 are spinning and supplying water flow as the actual pressure is equal to or approaching the constant pressure setpoint, the proportional output is zero and the controller 24 does not increase the speed of the motor to meet or exceed the constant pressure setpoint. As a result, the actual pressure is slightly lower than the constant pressure setpoint if the pump control system 14 provides only proportional control.

When the pressure in the water distribution system exceeds the constant pressure setpoint, the controller 24 can stop driving the motor 16 after a predetermined increase (e.g., 1 PSI) in pressure above the pre-set pressure value (which can also be referred to as the constant pressure setpoint). In some embodiments, there is a hysteresis band above and below the constant pressure setpoint. For example, a high band pressure value can be 4 PSI greater than the constant pressure setpoint and a low band pressure value can be 1 PSI less than the constant pressure setpoint. However, in some embodiments, a user can configure the high and low band pressure values, and the user can store the high and low band pressure values in memory (such as an EEPROM).

In some embodiments, the actual pressure in the water distribution system is monitored constantly or almost constantly, but no action is taken until the actual pressure falls below the low band pressure. Once the motor 16 starts spinning, normal operation with the PI control loop (as described above with respect to FIG. 3) can commence and can continue until the actual pressure exceeds the high band pressure or until the PI control output is zero. With the motor 16 spinning, the controller 24 can continuously or semi-continuously regulate (e.g., regulate at a suitable sample rate) the motor speed using the PI control loop, as long as the actual pressure remains below the high band pressure value. The drives 46 to the motor 16 can be set to zero when the actual pressure exceeds the high band pressure value. During normal operation, the actual pressure can remain constant or near constant at a value close to the constant pressure setpoint, as long as water usage does not exceed the capabilities of the pump 10 and/or the motor 16. However, large instantaneous changes in flow requirements may result in variations from the constant pressure setpoint and/or the high and low band pressure values.

The controller 24 can perform low-pressure undershoot and low-pressure recovery time procedures during instances of increased flow. For example, the controller 24 can set appropriate gains in order to recover from a large flow demand after which the motor 16 cannot instantaneously speed up enough. The controller 24 can also perform a high-pressure overshoot procedure during instances of decreased flow (including zero flow). For example, the controller 24 can set appropriate gains in order to recover when a valve is closed so quickly that flow cannot be stopped quickly enough.

As discussed above, in order to provide high performance control, the controller 24 can take into account the motor speed required for the pump 10 to open any check valves and produce a positive water flow in the water distribution system. This motor speed can be determined during the self-calibration procedure described above with respect to FIG. 2 (or during an automatic or manual calibration procedure conducted subsequent to the initial installation of the pump 10) and can be referred to as the minimum calibrated speed value or the minimum non-zero flow speed. In some embodiments and/or particular situations, the controller 24 can provide an actual motor command to the motor 16 equal to the sum of the speed control command (i.e., the PI control output as described above with respect to FIG. 3) and the minimum non-zero flow speed. As a result, small pressure errors are capable of turning the motor 16 on, which allows more accurate pressure regulation during low-flow states, as well as rapid responses for large transient increases in flow demand.

In some embodiments, the controller 24 can provide a pump motor frequency of zero in certain situations. For example, as described above, if the actual pressure exceeds the high band pressure value, the drive to the motor 16 can be ramped down to a zero frequency. As another example, when the actual pressure has reached the constant pressure setpoint and no flow is occurring, the PI control output may fall below a low threshold. When the PI control output falls below the low threshold, the controller 24 can set the motor output at an idle speed for an idle time period, such as ten seconds. The idle speed can be a speed below the minimum non-zero flow speed that can keep the motor spinning without opening any check valves or causing water to flow from the pump 10. During the idle time period, if a drop in pressure occurs (i.e., a demand for flow occurs), the controller 24 can automatically switch from the idle mode to the normal pressure regulation mode as described with respect to FIG. 3. During these transitions, the motor 16 is already running at a speed near the minimum non-zero flow speed, which allows a quicker flow response than starting the motor 16 from a zero speed. However, if the idle time period has elapsed without a drop in pressure (i.e., without a demand for flow), the drive to the motor 16 can be ramped down to a zero frequency.

Referring to FIG. 4, the controller 24 can operate the motor 16 in a limp mode in a number of different situations. The controller 24 can measure one or more of the following parameters: the bus current (at 200); the bus voltage (at 202); the line current (at 204); and the heat sink temperature from the temperature sensor 19 (at 206). The controller 24 can determine (at 208) whether the bus current is greater than a limp current limit setting (e.g., about 7 amps). If the bus current is greater than the limp current limit setting, the controller 24 can drive (at 210) the motor 16 in a limp mode. In the limp mode, the controller 24 can reduce (at 212) one or both of an output voltage provided to the motor 16 and an operating frequency of the motor 16 (e.g., reduce the output voltage and the operational frequency along the V/Hz curve of the motor 16).

The controller 24 can also determine (at 214) whether the bus voltage is less than a programmed threshold (e.g., about 275 volts). If the bus voltage is less than the programmed threshold, the controller 24 can drive (at 210) the motor 16 in the limp mode. The controller 24 can further determine (at 216) whether the line current is greater than a programmed threshold (e.g., about 26 amps). If the line current is greater than the programmed threshold, the controller 24 can drive (at 210) the motor 16 in the limp mode.

The controller 24 can still further determine (at 218) whether the heat sink temperature read from the temperature sensor 19 is greater than a limp temperature limit setting (e.g., about 60° C.). If the temperature is greater than the limp temperature limit setting, the controller 24 can drive (at 210) the motor in the limp mode. In some embodiments, the controller 24 can set the limp temperature limit setting during a power-up procedure for the motor drive (e.g., a 30 second power-up procedure). For example, the controller 24 can determine whether the input voltage from the AC bus line 22 is 115 V or 230 V. In one embodiment, if the input voltage is 115 V, the controller 24 can set the limp temperature limit setting to 51° C., and if the input voltage is 230 V, the controller 24 can set the limp temperature limit setting to 60° C. However, in some embodiments, a user can change the limp temperature limit setting, for example, using the external device 58 and the serial communication link 56. If the user changes the limp temperature limit setting, the controller 24 can change a control bit in the EEPROM 54 to indicate that the user has changed the limp temperature limit setting. During subsequent power-up procedures or power cycles, the controller 24 can recognize that the control bit has been changed. The controller 24 can then use the limp temperature limit setting defined by the user, rather than using one of the default limp temperature limit settings that correspond to the input voltage.

Once the controller 24 is operating the motor 16 in the limp mode, the controller 24 can attempt to continue operating (at 220) the motor drive within specified operational limits. The controller 24 can determine (at 222) whether the bus current, the bus voltage, the line current, and/or the heat sink temperature have returned to within the specified operational limits. If the motor drive cannot operate within the specified operational limits or if the controller 24 has been operating in the limp mode for too long (i.e., excessive limp), the controller 24 can shut down (at 224) the motor drive. In some embodiments, when the controller 24 operates the motor 16 in the limp mode, the controller 24 does not generate or store a fault condition code in the fault log (as described below with respect to FIG. 15). When the motor 16 is operating in the limp mode, pressure regulation may not be maintained, but system failure or shutdown can often be prevented.

As shown and described with respect to FIGS. 5-11, the controller 24 can detect a number of fault conditions and can attempt to prevent damage to itself and/or the motor 16 and/or the pump 10. In general, the following several paragraphs describe each of the fault conditions, the conditions under which the fault condition occurs, and the action the controller 24 takes after sensing the fault condition. FIG. 12 illustrates a method of creating a fault log in order to store information regarding each of the fault conditions.

Referring to FIG. 5, the controller 24 can determine whether a bus over-voltage fault condition or a bus under-voltage fault condition has occurred by first measuring (at 250) the bus voltage of the DC bus line 48. The controller 24 can determine (at 252) whether the bus voltage is greater than an upper limit (e.g., about 450 volts) or less than a lower limit (e.g., about 250 volts). If the bus voltage is greater than the upper limit or less than the lower limit, the controller 24 can generate (at 254) a fault condition code. The controller 24 can shut down (at 256) the drive 46 to the motor 16 for a time period (e.g., about 30 seconds). The controller 24 can attempt to restart (at 258) the drive 46 after the time period has elapsed.

Referring to FIG. 6, the controller 24 can determine whether a bus over-current fault condition has occurred by first measuring (at 300) the bus current of the DC bus line 48. The controller 24 can determine (at 302) whether the bus current is greater than an upper limit (e.g., about 25 amps). If the bus current is greater than the upper limit, the controller 24 can generate (at 304) a fault condition code. The controller 24 can shut down (at 306) the drive 46 to the motor 16 for a time period (e.g., about 30 seconds). The controller 24 can attempt to restart (at 308) the drive 46 to the motor 16 after the time period has elapsed.

Referring to FIG. 7, the controller 24 can determine whether a dry-running fault condition has occurred by sensing (at 350) a first bus current value from the DC bus line 48. The controller 24 can determine (at 352) whether the first bus current value is less than a pre-set threshold (e.g., about 1.5 amps). If the first bus current value is less than the pre-set threshold, the controller 24 can start (at 354) a timer. After a pre-set time period (e.g., about 1 second) has elapsed, the controller 24 can sense (at 356) a second bus current value. The controller 24 can determine (at 358) whether the second bus current value is still less than the pre-set threshold. If the second bus current is still less than the pre-set threshold, the controller 24 can determine (at 360) whether the motor drive is operating at full speed. If the motor drive is operating at full speed, the controller 24 can generate (at 362) a fault condition code. The controller 24 can shut down (at 364) the motor drive for a time period (e.g., about 30 seconds). The controller 24 can attempt to restart (at 366) the motor drive after the time period has elapsed.

Referring to FIG. 8, the controller 24 can determine whether an over-temperature fault condition has occurred by sensing (at 400) a first temperature value of a heat sink (e.g., sensing a temperature of the heat sink 21 of the controller 24 with the temperature sensor 19). The controller 24 can determine (at 402) whether the first temperature value is greater than a temperature upper limit (e.g., about 70° C.). If the first temperature value is greater than a temperature upper limit, the controller 24 can generate (at 404) a fault condition code. The controller 24 can also shut down (at 406) the motor drive. After the motor drive has been shut down, the controller 24 can sense (at 408) a second temperature value of the heat sink. The controller 24 can determine (at 410) whether the second temperature value is less than a limp mode temperature limit (e.g., about 60° C.). If the second temperature value is less than the limp mode temperature limit, the controller 24 can attempt (at 412) to restart the motor drive. If the second temperature value is not less than the limp mode temperature limit, the controller 24 can continue to sense (at 408) the heat sink temperature until the heat sink temperature falls below the limp mode temperature limit.

Referring to FIG. 9, the controller 24 can determine whether a high-speed jamming fault condition has occurred by sensing a first bus current value of the DC bus line 48 and by sensing the motor speed. As used herein and in the appended claims, the term “motor speed” refers to one or more of an actual speed of the motor 16, a commanded motor speed, and/or a commanded motor frequency. The controller 24 can determine (at 450) whether the first bus current value is greater than a bus current upper limit (e.g., about 15 amps) and whether the motor speed is greater than or equal to a high-speed limit. If the first bus current value is less than the bus current upper limit and/or if the motor speed is less than the high-speed limit, a high-speed jamming fault condition has not occurred and the controller 24 can continue to operate (at 452) the motor 16 in the forward direction. If the first bus current value is greater than a bus current upper limit and if the speed of the motor is greater than or equal to a high-speed limit, the controller 24 can increment (at 454) a counter and set (at 454) a timer. The controller 24 can determine (at 456) whether the counter has been incremented above an increment limit (e.g., about five times) within a first time period (e.g., about five minutes). If the counter has not been incremented above the increment limit within the first time period, the controller 24 can return to sensing (at 450) the bus current value and the motor speed. If the counter has been incremented above the increment limit within the first time period, the controller 24 can attempt to operate (at 458) the motor 16 in a reverse direction. The controller 24 can sense a second bus current value while the motor is operating in the reverse direction. The controller 24 can determine (at 460) whether the second bus current value is also greater than the bus current upper limit. If the second bus current value is also greater than the bus current upper limit (i.e., there is also a bus over-current fault condition in the reverse direction), the controller 24 can generate (at 462) a fault condition code and shut down the motor drive. If the second bus current value is less than the bus current upper limit (i.e., there is not a bus over-current fault condition in the reverse direction), the controller 24 can operate (at 464) the motor 16 in the reverse direction for a second time period (e.g., about 30 seconds). Once the second time period has elapsed and presumably the foreign object is cleared, the controller 24 can attempt (at 452) to operate the motor in the forward direction. In some embodiments, the controller 24 can also monitor for a high-speed jamming fault condition by determining the change in bus current with respect to a change in time (e.g., in order to detect rapid changes in the bus current that may indicate a high-speed jamming fault condition).

Referring to FIG. 10, the controller 24 can determine whether a low-speed jamming fault condition has occurred by sensing a first bus current value of the DC bus line 48 and sensing the motor speed. The controller 24 can determine (at 500) whether the first bus current value is greater than a programmed threshold (e.g., about 7 amps) and whether the speed of the motor is less than a motor speed low threshold. If the first bus current value is greater than a programmed threshold and if the speed of the motor is less than a motor speed low threshold, the controller 24 can attempt to operate (at 502) the motor 16 in a reverse direction. The controller 24 can sense a second bus current value while the motor is operating in the reverse direction. The controller 24 can determine (at 504) whether the second bus current value is also greater than the programmed threshold. If the second bus current value is also greater than the programmed threshold (i.e., there is also a low-speed jamming fault condition in the reverse direction), the controller 24 can generate (at 506) a fault condition code and can shut down (at 506) the motor drive. If the second bus current value is less than the programmed threshold (i.e., there is not a low-speed jamming fault condition in the reverse direction), the controller 24 can operate (at 508) the motor 16 in the reverse direction for a time period (e.g., about 30 seconds). After the time period has elapsed and presumably the foreign object is cleared, the controller 24 can attempt to operate (at 510) the motor 16 in the forward direction.

Referring to FIG. 11, the controller 24 can monitor the pressure sensor 18 or any other pressure sensors in the water distribution system to detect pressure sensor failure. The controller 24 can detect a first pressure sensor signal by reading (at 550) the pressure sensor 18. The controller 24 can compare (at 552) the first pressure sensor signal to a sense range. The controller 24 can determine (at 554) whether the first pressure sensor signal is outside of the sense range (e.g., the pressure sensor itself may be shorted, not connected, or open, or a cable connected to the pressure sensor may be shorted, not connected, or open). If the pressure sensor signal is outside of the sense range, the controller 24 can shut down (at 556) the motor drive. The controller 24 can determine (at 558) whether the pressure sensor has been replaced or repaired by attempting to detect a second pressure sensor signal after power has be reapplied to the motor drive. If the controller 24 does not sense a second pressure sensor signal, the controller 24 can allow (at 560) the motor drive to remain shut down until a second pressure signal is detected.

Also referring to FIG. 11, the controller 24 can determine whether the pressure sensor 18 is failing due to a short condition with respect to the power supply for the pressure sensor 18. The controller 24 can detect a pressure sensor signal by reading (at 550) the pressure sensor 18. The controller 24 can determine (at 562) whether the pressure sensor signal indicates that the power supply is shorted. If the pressure sensor signal does indicate that the power supply is shorted, the controller 24 can disable (at 564) the power supply. The controller 24 can determine (at 566) whether the shorted power supply is the selected sensor input for the pressure sensor 18. If the shorted power supply is the selected sensor input for the pressure sensor 18, the controller 24 can generate (at 568) a fault condition code and can shut down (at 568) the motor drive. If the shorted power supply is not the selected sensor input for the pressure sensor 18, the controller 24 can disable (at 570) the shorted power supply and/or ignore (at 570) the fault condition.

The controller 24 can determine whether a power device/ground fault has occurred by determining whether a power-device protection interrupt (PDPINTA) input has been generated. The PDPINTA input can be generated by hardware (i.e., ground current, damaged IGBT, shorted output, etc.) and sent to an interrupt pin on the DSP 26. At the detection of this fault condition, the controller 24 can shut down the motor drive. The controller 24 can restart the motor drive after a time period (e.g., about 30 seconds). If three PDPINTA inputs occur since the last power-up, the controller 24 can turn the motor drive off. In one embodiment, the controller 24 does not turn the motor drive on again until a power cycle causes the fault condition to clear.

Referring to FIG. 12, the controller 24 can create a fault log that a user can access in order to monitor the operation of the controller 24, the pump 10, and/or the motor 16. The controller 24 can sense (at 600) that a new fault condition has occurred (as described above with respect to any one of FIGS. 5-11). The controller 24 can determine (at 602) the fault condition code corresponding to the new fault condition and can increment a counter. The controller 24 can determine (at 604) whether the counter has been incremented above an increment limit (e.g., 15 fault condition codes). If the counter has been incremented above the increment limit, the controller 24 can store the new fault condition code by overwriting (at 606) one of the old fault condition codes. If the counter has not been incremented above the increment limit, the controller 24 can store (at 608) the new fault condition code in a new memory location. The controller 24 can also store (at 610) a time stamp of the current powered time when the new fault condition code is logged. Using the serial communication link 56 and the external device 58, a user can retrieve (at 612) the new fault condition code and the old fault condition codes (which, in some embodiments, is the 15 most-recent fault condition codes). In other embodiments, a user can retrieve the fault condition codes using other technologies, such as various forms of wireless communication (e.g., cellular or infrared wireless communication).

The controller 24 can operate one of the LEDs (e.g., LED B shown in FIG. 1, which can be a red LED) in order to indicate to a user that one or more fault conditions have occurred. If no faults have occurred since the last reset (either by a power cycle or by a user pressing the clear fault LED button 68 or by the system), the controller 24 can keep LED B in a de-energized state. The controller 24 can provide an indication of the most recent faults by flashing LED B at various rates. The flash rate can depend on the category or group of the most recent faults. For example, LED B can flash slowly for dry-running, bus over-voltage, and bus under-voltage fault conditions. Also, LED B can flash quickly for bus over-current, power device/ground fault, and jam detection fault conditions. In addition, LED B can flash at a combination rate for pressure sensor failure and over-temperature fault conditions. The controller 24 can keep LED B lit continuously if too many faults conditions occur within a set time period (e.g., 15 fault conditions within about 30 minutes). However, in one embodiment, LED B is lit when a fault condition is occurring, but the controller 24 shuts off LED B if the fault condition is no longer occurring. In other words, LED B does not remain lit continuously once the fault condition is no longer occurring, even if the pump control system 14 does not include a clear fault LED button 68 or a user has not pushed the clear fault LED button 68. If the power is cycled or a user presses the clear fault LED button 68, the controller 24 can reset the fault counter and the fault timer. In some embodiments, when any fault condition occurs, if the fault timer is greater than about 30 minutes, the controller 24 can reset the fault timer to zero. In some embodiments, after a fault condition stops the motor 16 (with the exception of over-temperature, power device/ground fault, and pressure sensor fault conditions), the controller 24 can wait about 30 seconds and then attempt to restart the motor 16.

It should be understood that although the above description refers to the steps shown in FIGS. 2-12 in a particular order, that the scope of the appended claims is not to be limited to any particular order. The steps described above can be performed in various different orders and still fall within the scope of the invention. In addition, the various pressure, voltage, and current thresholds, values, and time periods or durations discussed above are included by way of example only and are not intended to limit the scope of the claims.

In general, all the embodiments described above and illustrated in the figures are presented by way of example only and are not intended as a limitation upon the concepts and principles of the present invention. As such, it will be appreciated by one having ordinary skill in the art that various changes in the elements and their configuration and arrangement are possible without departing from the spirit and scope of the present invention as set forth in the appended claims. 

1. A method of calibrating a pump having a motor, the pump connected to a water distribution system, the method comprising: operating the motor in a forward direction; sensing a pressure in the water distribution system; determining whether the sensed pressure has increased by a pressure increment; increasing an operating frequency of the motor by a frequency increment if the sensed pressure has not increased by the pressure increment; and storing a speed of the motor as a minimum calibrated speed value if the sensed pressure has increased by the pressure increment.
 2. The method of claim 1 and further comprising reducing the speed of the motor by at least one frequency increment before storing the speed of the motor as the minimum calibrated speed value.
 3. The method of claim 1 and further comprising sensing a pressure between the pump and a water tank.
 4. The method of claim 1 and further comprising determining whether the sensed pressure has increased by a pressure increment of one pound per square inch and increasing an operating frequency of the motor by a frequency increment of one Hertz.
 5. The method of claim 1 and further comprising setting at least one gain based on the minimum calibrated speed value.
 6. The method of claim 1 and further comprising sensing a pressure in a water distribution system connected to at least one of a well pump system, a municipal water system, a pool system, a spa system, a recreational vehicle water system, a marine craft water system, a turf or irrigation system, and a pressure boost system.
 7. The method of claim 1 and further comprising performing a regulation mode to increase the pressure in a water tank to a tank pressure setpoint and performing a search mode to increase the pressure in the water tank to a pressure increment above the tank pressure setpoint.
 8. The method of claim 1 and further comprising setting a gain for a proportional/integral control loop based on the minimum calibrated speed value.
 9. A method of regulating a speed of a motor in a pump, the pump connected to a water distribution system, the method comprising: measuring an actual pressure in the water distribution system; determining whether the actual pressure is less than, greater than, or equal to a constant pressure setpoint; subtracting the actual pressure from a desired pressure to determine a pressure error if the actual pressure is less than or greater than the constant pressure setpoint; determining an integral of the pressure error; multiplying the integral by an integral gain to determine a first value; multiplying the pressure error by a proportional gain to determine a second value; summing the first value and the second value; and generating an updated speed control command based on the sum of the first value and the second value.
 10. The method of claim 9 and further comprising measuring the actual pressure between the pump and a water tank.
 11. The method of claim 9 and further comprising generating an updated speed control command that includes a pulse-width modulated signal.
 12. The method of claim 9 and further comprising generating an updated speed control command that includes a space vector pulse-width modulated signal.
 13. The method of claim 9 and further comprising generating the updated speed control command in real-time.
 14. The method of claim 9 and further comprising generating an updated speed control command that includes a motor drive frequency.
 15. The method of claim 9 and further comprising determining whether the actual pressure is greater than a high band pressure or less than a low band pressure.
 16. The method of claim 15 and further comprising generating an updated speed control command when the actual pressure is less than the low band pressure.
 17. The method of claim 15 and further comprising generating an updated speed control command until the actual pressure is greater than the high band pressure.
 18. The method of claim 9 and further comprising generating a motor command including the updated speed control command and a minimum calibrated speed value.
 19. The method of claim 9 and further comprising measuring an actual pressure in a water distribution system connected to at least one of a well pump system, a municipal water system, a pool system, a spa system, a recreational vehicle water system, a marine craft water system, a turf or irrigation system, and a pressure booster system.
 20. A method of operating a motor of a pump, the method comprising: measuring a bus current being provided to the motor; determining whether the bus current is greater than a limp current limit setting; reducing at least one of an output voltage provided to the motor and an operating frequency of the motor if the bus current is greater than the limp current limit setting in order to drive the motor in a limp mode; and shutting down the motor if the motor does not operate within operational limits while being driven in the limp mode.
 21. The method of claim 20 and further comprising driving the motor in the limp mode without generating a fault condition code.
 22. The method of claim 21 and further comprising generating the fault condition code while shutting down the motor.
 23. The method of claim 20 and further comprising indicating to a user that the motor is operating in the limp mode.
 24. A method of operating a motor of a pump, the method comprising: measuring a bus voltage being provided to the motor; determining whether the bus voltage is less than a programmed threshold; reducing at least one of an output voltage provided to the motor and an operating frequency of the motor if the bus voltage is less than the programmed threshold in order to drive the motor in a limp mode; and shutting down the motor if the motor does not operate within operational limits while being driven in the limp mode.
 25. The method of claim 24 and further comprising driving the motor in the limp mode without generating a fault condition code.
 26. The method of claim 25 and further comprising generating the fault condition code while shutting down the motor.
 27. The method of claim 24 and further comprising indicating to a user that the motor is operating in the limp mode.
 28. A method of operating a motor of a pump, the method comprising: measuring a line current; determining whether the line current is greater than a programmed threshold; reducing at least one of an output voltage provided to the motor and an operating frequency of the motor if the line current is less than the programmed threshold in order to drive the motor in a limp mode; and shutting down the motor if the motor does not operate within operational limits while being driven in the limp mode.
 29. The method of claim 28 and further comprising driving the motor in the limp mode without generating a fault condition code.
 30. The method of claim 29 and further comprising generating the fault condition code while shutting down the motor.
 31. The method of claim 28 and further comprising indicating to a user that the motor is operating in the limp mode.
 32. A method of operating a motor of a pump, the method comprising: measuring a temperature of a heat sink; determining whether the temperature is greater than a limp temperature limit setting; reducing at least one of an output voltage provided to the motor and an operating frequency of the motor if the temperature is greater than the limp temperature limit setting in order to drive the motor in a limp mode; and shutting down the motor if the motor does not operate within operational limits while being driven in the limp mode.
 33. The method of claim 32 and further comprising driving the motor in the limp mode without generating a fault condition code.
 34. The method of claim 33 and further comprising generating the fault condition code while shutting down the motor.
 35. The method of claim 32 and further comprising indicating to a user that the motor is operating in the limp mode.
 36. A method of detecting a fault condition in a motor of a pump, the method comprising: measuring a bus voltage being provided to the motor; generating a fault condition code if the bus voltage is greater than an upper limit or less than a lower limit; shutting down a drive to the motor for a time period; and restarting the drive to the motor after the time period has elapsed.
 37. The method of claim 36 and further comprising generating a fault condition code if the bus voltage is greater than about 450 volts or less than about 250 volts.
 38. The method of claim 36 and further comprising shutting down a drive to the motor for about 30 seconds.
 39. The method of claim 36 and further comprising indicating to a user that a fault condition code has been generated.
 40. A method of detecting a fault condition in a motor of a pump, the method comprising: measuring a bus current being provided to the motor; generating a fault condition code if the bus current is greater than a bus current upper limit setting; shutting down a drive to the motor for a time period; and restarting the drive to the motor after the time period has elapsed.
 41. The method of claim 40 and further comprising generating a fault condition code if the bus current is greater than about 25 amps.
 42. The method of claim 40 and further comprising shutting down a drive to the motor for about 30 seconds.
 43. The method of claim 40 and further comprising indicating to a user that a fault condition code has been generated.
 44. A method of detecting a fault condition in a motor of a pump, the method comprising: sensing a first bus current value; starting a timer if the first bus current value is less than a pre-set threshold; sensing a second bus current value after a pre-set time period has elapsed; determining whether a drive to the motor is operating at a full speed; generating a fault condition code if the second bus current value is also less than the pre-set threshold and if the drive to the motor is operating at the full speed; shutting down the drive to the motor for a time period; and restarting the drive to the motor after the time period has elapsed.
 45. The method of claim 44 and further comprising sensing a second bus current value after a about one second has elapsed.
 46. The method of claim 44 and further comprising generating a fault condition code if the second bus current value is less than about 1.5 amps and if the drive to the motor is operating at the full speed.
 47. The method of claim 44 and further comprising shutting down a drive to the motor for about 30 seconds.
 48. The method of claim 44 and further comprising indicating to a user that a fault condition code has been generated.
 49. A method of detecting a fault condition in a motor of a pump, the method comprising: sensing a first temperature value of a heat sink; generating a fault condition code if the first temperature value is greater than a temperature upper limit; shutting down a drive to the motor; sensing a second temperature value of the heat sink; and attempting to restart the drive to the motor if the second temperature value is less than a limp mode temperature limit.
 50. The method of claim 49 and further comprising sensing a first temperature of a heat sink connected to at least one of the pump, the motor, and a controller.
 51. The method of claim 49 and further comprising generating a fault condition code if the first temperature value is greater than about 70 degrees Celsius.
 52. The method of claim 49 and further comprising attempting to restart the drive to the motor if the second temperature value is less than about 60 degrees Celsius.
 53. The method of claim 49 and further comprising indicating to a user that a fault condition code has been generated.
 54. The method of claim 49 and further comprising setting the limp mode temperature limit based on an input voltage.
 55. A method of detecting a fault condition in a motor of a pump, the method comprising: sensing a first bus current value; sensing a speed of the motor; incrementing a counter and setting a timer if the first bus current value is greater than a bus current upper limit and if the speed of the motor is greater than or equal to a high speed limit; attempting to operate the motor in a reverse direction if the counter has been incremented above an increment limit within a first time period; sensing a second bus current value while the motor is operating in the reverse direction; operating the motor in the reverse direction for a second time period if the second bus current value is less than the bus current upper limit and attempting to operate the motor in a forward direction once the second time period has elapsed; and generating a fault condition code and shutting down a drive to the motor if the second bus current value is greater than the bus current upper limit.
 56. The method of claim 55 and further comprising incrementing a counter and setting a timer if the first bus current value is greater than about 15 amps and if the speed of the motor is greater than or equal to a high speed limit.
 57. The method of claim 55 and further comprising attempting to operate the motor in a reverse direction if the counter has been incremented above five increments within about five minutes.
 58. The method of claim 55 and further comprising operating the motor in the reverse direction for about 30 seconds.
 59. The method of claim 55 and further comprising indicating to a user that a fault condition code has been generated.
 60. A method of detecting a fault condition in a motor of a pump, the method comprising: sensing a first line current value; sensing a speed of the motor; attempting to operate the motor in a reverse direction if the first line current value is greater than a programmed threshold and if the speed of the motor is less than a motor speed low threshold; sensing a second line current value while the motor is operating in the reverse direction; generating a fault condition code and shutting down a drive to the motor if the second line current value is also greater than the programmed threshold; and operating the motor in the reverse direction for a time period if the second line current value is less than the programmed threshold and attempting to operate the motor in a forward direction after the time period has elapsed.
 61. The method of claim 60 and further comprising generating a fault condition code and shutting down a drive to the motor if the second line current value is greater than about 7 amps.
 62. The method of claim 60 and further comprising operating the motor in the reverse direction for about 30 seconds.
 63. The method of claim 60 and further comprising indicating to a user that a fault condition code has been generated.
 64. A method of detecting a pressure sensor failure in a water distribution system, the water distribution system connected to a pump with a motor, the method comprising: detecting a first pressure sensor signal; shutting down a drive to the motor if the pressure sensor signal is outside of a sense range; attempting to detect a second pressure sensor signal after power has be reapplied to the drive; and allowing the drive to remain shut down until a second pressure signal is detected.
 65. The method of claim 64 and further comprising shutting down a drive to the motor if the pressure sensor signal is outside of a sense range of about 25 to about 95 pounds per square inch.
 66. The method of claim 64 and further comprising generating a fault condition code while shutting down the drive to the motor.
 67. The method of claim 66 and further comprising indicating to a user that a fault condition code has been generated.
 68. The method of claim 64 and further comprising automatically detecting a type of pressure sensor that is generating at least one of the first pressure sensor signal and the second pressure sensor.
 69. A method of operating a pressure sensor in a water distribution system, the water distribution system connected to a pump with a motor, the method comprising: detecting a pressure sensor signal; disabling a power supply connected to the pressure sensor if the pressure sensor signal indicates that the power supply is shorted; and generating a fault condition code and shutting down a drive to the motor if the shorted power supply is a selected sensor input for the pressure sensor.
 70. The method of claim 69 and further comprising automatically detecting a type of pressure sensor that is generating the pressure sensor signal.
 71. The method of claim 69 and further comprising indicating to a user that a fault condition code has been generated.
 72. A method of monitoring fault conditions occurring in a water distribution system, the method comprising: sensing a new fault condition occurring in the water distribution system; generating a fault condition code and incrementing a counter; determining whether the counter has been incremented above an increment limit; storing the new fault condition code over one of a plurality of old fault condition codes if the counter has been incremented above an increment limit; storing the new fault condition code in a new memory location if the counter has not been incremented above an increment limit; and retrieving the new fault condition code and the plurality of old fault condition codes.
 73. The method of claim 72 and further comprising determining whether the counter has been incremented above an increment limit of 15 fault condition codes.
 74. The method of claim 72 and further comprising storing the new fault condition code over an oldest one of the plurality of old fault condition codes if the counter has been incremented above the increment limit.
 75. The method of claim 72 and further comprising retrieving the new fault condition code and the plurality of old fault condition codes with at least one of a serial communication link and a wireless communication link.
 76. The method of claim 72 and further comprising indicating to a user a type of fault condition code of the new fault condition code.
 77. A pump control system for use with a pump in one of a pool system and a spa system, the pump control system comprising: a controller connected to a motor of the pump; and a switch connected to the controller, the switch being connected to at least one of a guard and a grate in one of the pool system and the spa system, the switch providing a run/stop input when at least one of the guard and the grate are removed, the run/stop input causing the controller to automatically disable the motor.
 78. The pump control system of claim 77, wherein the controller includes a digital signal processor and a microcontroller that communicates with the digital signal processor, the microcontroller receiving the run/stop input.
 79. The pump control system of claim 77, wherein the switch is a first switch, and further comprising a second switch connected to the first switch in a daisy chain configuration, the controller automatically disabling the motor if either the first switch or the second switch provides a run/stop input.
 80. A pump controller for use with a pump having a motor, the pump connected to a water distribution system, the pump controller comprising: a digital signal processor, the digital signal processor programmed to perform a self-calibration procedure, to operate the motor in a limp mode, and to detect fault conditions in the water distribution system; and a microcontroller that communicates with the digital signal processor, the microcontroller programmed to receive inputs from sensors in the water distribution system and to coordinate serial communications.
 81. A pump controller for use with a pump having a motor, the pump controller connected to an AC bus line, the pump controller comprising: an internal fuse removably connected to the AC bus line, the internal fuse being replaceable in order to configure the pump controller for operation with one of a single-phase 115 volt input and a single-phase 230 volt input from the AC bus line; and a digital signal processor connected to the internal fuse, the digital signal processor programmed to control three-phase output power provided to the motor from one of the single-phase 115 volt input and the single-phase 230 volt input.
 82. The pump controller of claim 81, wherein the digital signal processor controls three-phase output power provided to the motor using pulse-width modulation.
 83. A pump system connected to a water distribution system, the pump system comprising: a pump having a motor, the motor operating according to one of a plurality of Voltage/Hertz curves; and a controller connected to the motor, the controller being programmable by a user to operate the motor according to the one of the plurality of Voltage/Hertz curves.
 84. The pump system of claim 83, wherein the controller is programmable by a user via a serial communication link.
 85. The pump system of claim 83, wherein the controller is programmable according to at least one default Voltage/Hertz curve and at least one custom Voltage/Hertz curve.
 86. The pump system of claim 83, and further comprising a terminal including a motor select switch that can be actuated by a user to program the controller to operate according to one of the plurality of Voltage/Hertz curves. 